#ifndef REGISTERDIALOG_H
#define REGISTERDIALOG_H

#include <QDialog>
#include "global.h"
#include <functional>
#include <QMap>
#include "global.h"
#include <QJsonObject>
#include <QTimer>


namespace Ui {
class RegisterDialog;
}

class RegisterDialog : public QDialog
{
    Q_OBJECT

public:
    explicit RegisterDialog(QWidget *parent = nullptr);
    ~RegisterDialog();



//私有属性
private:
    Ui::RegisterDialog *ui;
    QMap<ReqId,std::function<void(const QJsonObject &)>> _handlers;
    /*
        _tip_errs用来缓存各个输入框输入完成后提示的错误，
        如果该输入框错误清除后就显示剩余的错误，每次只显示一条
        实现添加错误和删除错误
    */
    QMap<TipErr,QString> tip_errs_;

    QTimer* countdown_timer_;
    int countdown_;



//私有方法
private:
    void showTip(QString msg,bool b_ok);
    void initHttpHandlers();
    void AddTipErr(TipErr te,QString tips);
    void DelTipErr(TipErr te);


    bool checkUserValid();
    bool checkPassValid();
    bool checkEmailValid();
    bool checkVerifyValid();
    bool checkConfirmValid();

    void ChangeTipPage();
signals:
    void sigSwitchLogin();


private slots:
    void on_get_code_clicked();


    void on_sure_btn_clicked();

    void on_return_btn_clicked();

    void on_cancel_btn_clicked();

public slots:
    void slot_reg_mod_finish(ReqId id, QString res, ErrorCodes err);




};

#endif // REGISTERDIALOG_H
